using System;
using System.Runtime.Serialization;
using XTCast.Wave;

namespace XTCast.Mp3.Encode {
	//
	//  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
	//  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
	//  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
	//  PURPOSE. IT CAN BE DISTRIBUTED FREE OF CHARGE AS LONG AS THIS HEADER 
	//  REMAINS UNCHANGED.
	//
	//  Email:  yetiicb@hotmail.com
	//
	//  Copyright (C) 2002-2003 Idael Cardoso. 
	//  
	//  LAME ( LAME Ain't an Mp3 Encoder ) 
	//  You must call the fucntion "beVersion" to obtain information  like version 
	//  numbers (both of the DLL and encoding engine), release date and URL for 
	//  lame_enc's homepage. All this information should be made available to the 
	//  user of your product through a dialog box or something similar.
	//  You must see all information about LAME project and legal license infos at 
	//  http://www.mp3dev.org/  The official LAME site
	//
	/// <summary>
	/// Config information for MP3 writer
	/// </summary>
	[Serializable]
	public class Mp3WriterConfig  {
		private BE_CONFIG m_BeConfig;
		private WaveFormat _wavConfig;

		public Mp3WriterConfig(WaveFormat InFormat, BE_CONFIG beconfig) {
			_wavConfig= InFormat;
			m_BeConfig = beconfig;
		}

		public Mp3WriterConfig(WaveFormat InFormat)
			:this(InFormat, new BE_CONFIG(InFormat)) {
		}

		public Mp3WriterConfig()
			:this(new WaveFormat(44100, 16, 2)) {
		}

		public WaveFormat Format {
			get {
				return _wavConfig;
			}
			set {
				_wavConfig = value;
			}
		}

		public BE_CONFIG Mp3Config {
			get {
				return m_BeConfig;
			}
			set {
				m_BeConfig = value;
			}
		}
	}
}